# -*- coding: utf-8 -*-
from os.path import isdir  #用于检测路径是否是目录
from scipy import io  #用于读取mat文件
import os, sys
import numpy as np   #用于数组操作
import matplotlib.pyplot as plt  #绘图
from PIL import Image  #图像处理

if __name__ == '__main__':  #主程序入口
    file_path = './CrackForest-dataset-master/groundTruth/'   #定义mat文件所在目录路径
    png_img_dir = './CrackForest-dataset-master/groundTruthPngImg/'  #定义生成的png图像保存
    if not isdir(png_img_dir):   #如果png图像保存目录不存在
        os.makedirs(png_img_dir) #创建图像保存目录
    image_path_lists = os.listdir(file_path)   #获取mat文件目录中的所有文件名目录
    images_path = []   #初始化一个列表用于存储每个mat文件的完整路径
    for index in range(len(image_path_lists)):   #遍历文件名列表索引
        image_file = os.path.join(file_path, image_path_lists[index])  #获取每个文件
        # print(image_file)#./CrackForest-dataset-master/groundTruth/001.mat
        images_path.append(image_file)   #将每个mat文件完整路径添加到列表当中
        image_mat = io.loadmat(image_file)     #读取mat文件
        segmentation_image = image_mat['groundTruth']['Segmentation'][0] #获取文件当中的图像数据
        segmentation_image_array = np.array(segmentation_image[0])  #将分割图像数据转换为numpy数组
        image = Image.fromarray((segmentation_image_array - 1) * 255)#将numpy数组转化为pil图像
        png_image_path = os.path.join(png_img_dir, "%s.png" % image_path_lists[index][0:3])  #生成保存png的图像路径
        # print(png_image_path)#./CrackForest-dataset-master/groundTruthPngImg/001.png
        image.save(png_image_path)  #将pil图像对象保存为png图像文件
        plt.figure()  #创建一个新的图形窗口
        plt.imshow(image)  #在图形窗口中显示图像
        # plt.pause(2)
        plt.pause(0.001)  #暂停0.001秒以更新图像显示
        # plt.show()